//
//  QGWelcomeView.swift
//  斯威夫特微博
//
//  Created by youyoumacmini3 on 2017/7/18.
//  Copyright © 2017年 youyoumacmini3. All rights reserved.
//

import UIKit
import SDWebImage

/// 欢迎试图
class QGWelcomeView: UIView {

    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var tipLabel: UILabel!
    
    @IBOutlet weak var bottomCons: NSLayoutConstraint!
    @IBOutlet weak var iconViewWidthCons: NSLayoutConstraint!
    
    class func welcomeView() -> QGWelcomeView {
        
        //通过xib加载view切记去xib中把类型改成QGWelcomeView
        let nib = UINib(nibName: "QGWelcomeView", bundle: nil)
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as! QGWelcomeView
        
        // 从xib加载的视图，默认是600 * 600的
        v.frame = UIScreen.main.bounds
        
        return v
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        // 提示： initWithCoder 只是刚刚从xib 的二进制文件将视图数据加载完成
        // 还没有和代码连线建立关系，开发时千万不能在这个方法中处理UI
        print("initWithCoder +\(iconView)")// 打印结果为nil
    }
    
    // 从xib加载完成调用
    override func awakeFromNib() {
        print("awakeFromNib +\(iconView)")
        
        // 1. url
        guard let urlStr = QGNetworkManager.shared.userAccount.avatar_large,
              let url = URL(string: urlStr)
            else { return }
        
        
        // 2. 设置头像
        // 不设置占位图 之前设置的会被清空
        iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big"))
        
        // 设置圆角
        // FIXME:(按理说应该不行，因为iconView.bounds还没有设置，但此处这样写竟然也行。。。)iconView.layer.cornerRadius = iconView.bounds.width * 0.5
        iconView.layer.cornerRadius = iconViewWidthCons.constant * 0.5
        iconView.layer.masksToBounds = true
        
    }
    
    
    
    // 自动布局系统更新完成约束后。会自动调用此方法
    // 通常对子视图布局进行修改
//    override func layoutSubviews() {
//        
//    }
    
    // 视图被添加到 window上，表示视图已经显示
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 视图是使用自动布局来设置的，只是设置了约束
        // - 当视图被添加到窗口上时，根据父视图的大小，计算约束值，更新控件位置
        // - layoutIfNeeded 会直接按照当前的约束直接更新控件位置
        // - 执行之后，控件所在位置，就是 XIB 中布局的位置
        self.layoutIfNeeded()
        
        bottomCons.constant = bounds.size.height - 200
        
         // 如果控件们的 frame 还没有计算好！所有的约束会一起动画！
        UIView.animate(withDuration: 1.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: [], animations: {
            
            // 更新约束
            self.layoutIfNeeded()
            
        }) { (_) in
            UIView.animate(withDuration: 1.0, animations: {
                self.tipLabel.alpha = 1;
            }, completion: { (_) in
                self.removeFromSuperview()
            })
        }
        
        
        
    }
} 
